package test1;

import mylist.MyOneList;
import mythread.MyThread1;
import mythread.MyThread2;

public class Run {

	public static void main(String[] args) throws InterruptedException {
		MyOneList list = new MyOneList();

		MyThread1 thread1 = new MyThread1(list);
		thread1.setName("A");
		thread1.start();

		MyThread2 thread2 = new MyThread2(list);
		thread2.setName("B");
		thread2.start();
		
		Thread.sleep(6000);
		
		System.out.println("listSize=" + list.getSize());

	}

	/**
	 * 注释 MyService类中的synchronized (list)
	 * 打印结果：
	 * listSize=2
	 * "脏读"出现了。出现的原因是两个线程以异步的方式返回list参数的size()大小。解决办法就是
	 * “同步化”。
	 *
	 * 放开MyService类中的synchronized (list)
	 * 打印结果：
	 * listSize=1
	 * 由于List参数对象在项目中是一份实例，是单例的，而且也正需要对list参数的getSize()
	 * 做同步的调用，所以就对list参数进行同步处理。
	 */

}
